from typing import Dict, List
from ..skill_type import SkillType

# 技能字典
class SkillDict:
    # 基础技能
    SHUSHAN_SKILL_1 = "穿云箭"
    SHUSHAN_SKILL_1_1 = "皓月斩"
    SHUSHAN_SKILL_1_2 = "疾风追电"

    #Aoe技能
    SHUSHAN_SKILL_AOE_1 = "如封似闭"

    # 爆发技能
    SHUSHAN_SKILL_BLAST_1 = "运转七星"
    SHUSHAN_SKILL_BLAST_2 = "八步赶蝉"
    # 控制技能
    SHUSHAN_SKILL_CONTROL_1_2 = "昊天掌"
    SHUSHAN_SKILL_CONTROL_1_3 = "风雷震"
    SHUSHAN_SKILL_CONTROL_1_4 = "剑飞惊鸿"
    # 辅助技能
    SHUSHAN_SKILL_BUFF_1 = "雪花六出"
    SHUSHAN_SKILL_BUFF_2 = "叠心三击"

    # 增益技能
    SHUSHAN_SKILL_BUFF_3 = "剑灵-回天"
    SHUSHAN_SKILL_BUFF_4 = "剑灵-同归"
    SHUSHAN_SKILL_BUFF_5 = "剑灵-追电"

    # 御剑技能
    SHUSHAN_SKILL_SWORD_BUFF_1 = "御剑术-剑雨"
    SHUSHAN_SKILL_SWORD_BUFF_2 = "御剑术-裂地"
    SHUSHAN_SKILL_SWORD_BUFF_3 = "御剑术-同归"
    def __init__(self):
        pass

# 技能列表
class SkillList:
    CAREER_NAME = "蜀山"
    def __init__(self):
        pass

    def get_career(self) -> Dict:
        return {
            # 职业名称  
            "name": self.CAREER_NAME,
            # 技能列表
            "skills": self.set_skills([
                # 基础技能

                # 穿云箭
                SkillDict.SHUSHAN_SKILL_1,
                # 皓月斩
                SkillDict.SHUSHAN_SKILL_1_1,
                # 疾风追电
                SkillDict.SHUSHAN_SKILL_1_2,


                # Aoe技能
                # 如封似闭
                SkillDict.SHUSHAN_SKILL_AOE_1,

                # 控制技能
                # 昊天掌    
                SkillDict.SHUSHAN_SKILL_CONTROL_1_2,
                # 风雷震
                SkillDict.SHUSHAN_SKILL_CONTROL_1_3,
                # 剑飞惊鸿
                SkillDict.SHUSHAN_SKILL_CONTROL_1_4,

                
                # 增益技能
                # 雪花六出
                SkillDict.SHUSHAN_SKILL_BUFF_1,
                # 叠心三击
                SkillDict.SHUSHAN_SKILL_BUFF_2,


                # 爆发技能
                # 运转七星
                SkillDict.SHUSHAN_SKILL_BLAST_1,
                # 八步赶蝉
                SkillDict.SHUSHAN_SKILL_BLAST_2,


                # 御剑技能
                # 剑灵-回天
                SkillDict.SHUSHAN_SKILL_BUFF_3,
                # 剑灵-同归
                SkillDict.SHUSHAN_SKILL_BUFF_4,
                # 剑灵-追电
                SkillDict.SHUSHAN_SKILL_BUFF_5,
                # 御剑术-剑雨
                SkillDict.SHUSHAN_SKILL_SWORD_BUFF_1,
                # 御剑术-裂地
                SkillDict.SHUSHAN_SKILL_SWORD_BUFF_2,
            ])
        }
    # 设置技能列表
    def set_skills(self, skills: List[Dict]):
        return {
            # """基础类技能"""
            # 穿云箭
            SkillDict.SHUSHAN_SKILL_1:  {
                # 技能名称  
                "name": "穿云箭",
                # 技能描述
                "description": "连击技能，第一击对目标造成23%的普通伤害，第二击对目标造成",
                # 技能类型 (基础技能)
                "type": SkillType.ACTIVE,
                # 冷却时间 (毫秒) 0.5秒冷却     
                "cd": 10000,
                # 消耗魔法值
                "mp": 100,
                # 技能效果
                "effect": [],
                # 技能范围
                "range": 2,  
                # 怒气
                "rage": 0,
                # 释放次数
                "release_count": 3,
                # 持续时间
                "duration": 1000,  # 1秒转换为毫秒
                # 攻击距离 步长
                "attack_range": 2,
                # 技能优先级 (1:核心技能 ， 2:主要技能 ， 3:次要技能 ， 4:辅助技能 ， 5:强控技能)
                "priority": 2,
                # 是否蓄力
                "is_charge": False,
                # 技能连招 
                "combo": [SkillDict.SHUSHAN_SKILL_1_2 ],
                # 技能冲突
                "conflict": [],
                # 技能图片
                "image": "SHUSHAN_SKILL_1.png",
            },
            # 皓月斩
            SkillDict.SHUSHAN_SKILL_1_1: {
                "name": SkillDict.SHUSHAN_SKILL_1_1,
                # 技能描述
                "description": "对目标造成170%的普通伤害再加上一定点数伤害，并在攻击后恢复等值于伤害的生命。远距离攻击敌人，可以吸血，对怪物效果最佳。",
                # 技能类型 (基础技能)
                "type": SkillType.ACTIVE,
                # 冷却时间 (毫秒)   9秒冷却
                "cd": 9000,
                # 消耗魔法值
                "mp": 84,
                # 技能效果
                "effect": [],
                # 技能范围
                "range": 2,  
                # 怒气
                "rage": 0,
                # 释放次数
                "release_count": 1,
                # 持续时间
                "duration": 9000,  # 9秒转换为毫秒
                # 技能优先级
                "priority": 3,
                # 是否蓄力
                "is_charge": False,
                # 技能连招 
                "combo": [],
                # 技能冲突
                "conflict": [],
                # 技能图片
                "image": "SHUSHAN_SKILL_1_1.png", 
            },


            # """Aoe技能"""
            # 如封似闭
            SkillDict.SHUSHAN_SKILL_AOE_1: {
                "name": SkillDict.SHUSHAN_SKILL_AOE_1,
                # 技能描述
                "description": "对范围内6个敌人造成100%的普通伤害，并使敌人移动速度下降。",
                # 技能类型 (Aoe技能)
                "type": SkillType.AOE,
                # 冷却时间 (毫秒)   15秒冷却
                "cd": 15000,
                # 消耗魔法值
                "mp": 0,
                # 技能效果
                "effect": [],
                # 技能范围
                "range": 6, 
                # 怒气  （0：无消耗 ， 60：消耗60点怒气）
                "rage": 60,
                # 释放次数
                "release_count": 1,
                # 持续时间
                "duration": 5000,  # 5秒转换为毫秒
                # 技能优先级
                "priority": 2,
                # 是否蓄力
                "is_charge": False,
                # 技能连招 
                "combo": [],
                # 技能冲突
                "conflict": [],
                # 技能图片
                "image": "SHUSHAN_SKILL_AOE_1.png", 
            },

            # """控制类技能"""

            # 昊天掌
            SkillDict.SHUSHAN_SKILL_CONTROL_1_2: {
                "name": SkillDict.SHUSHAN_SKILL_CONTROL_1_2,
                # 技能描述
                "description": "",
                # 技能类型 (控制技能)
                "type": SkillType.CONTROL,
                # 冷却时间 (毫秒)   9秒冷却
                "cd": 9000,
                # 消耗魔法值
                "mp": 84,
                # 技能效果
                "effect": [],
                # 技能范围
                "range": 2,  
                # 怒气
                "rage": 0,
                # 释放次数
                "release_count": 1,
                # 持续时间
                "duration": 9000,  # 9秒转换为毫秒
                # 技能优先级
                "priority": 5,
                # 是否蓄力
                "is_charge": False, 
                # 技能连招 
                "combo": [],
                # 技能冲突
                "conflict": [],
                # 技能图片
                "image": "SHUSHAN_SKILL_CONTROL_1_2.png", 
                },

             # 风雷震
            SkillDict.SHUSHAN_SKILL_CONTROL_1_3: {
                "name": SkillDict.SHUSHAN_SKILL_CONTROL_1_3,
                # 技能描述
                "description": "令范围内6个敌人眩晕2秒",
                # 技能类型 (控制技能)
                "type": SkillType.CONTROL,
                # 冷却时间 (毫秒)   60秒冷却
                "cd": 60000,
                # 消耗魔法值
                "mp": 84,
                # 技能效果
                "effect": [],
                # 技能范围
                "range": 6,  
                # 怒气
                "rage": 0,
                # 释放次数
                "release_count": 1,
                # 持续时间
                "duration": 0,
                # 技能优先级
                "priority": 5,
                # 是否蓄力
                "is_charge": True, 
                # 技能连招 
                "combo": [],
                # 技能冲突
                "conflict": [],
                # 技能图片
                "image": "SHUSHAN_SKILL_CONTROL_1_3.png", 
            },
            # 疾风追电
            SkillDict.SHUSHAN_SKILL_1_2: {
                "name": SkillDict.SHUSHAN_SKILL_1_2,
                # 技能描述
                "description": "对目标进行4连击，每次攻击对其造成90%的普通伤害，在连击过程中，技能回避率提升80%，并在连击结束后使自身12秒内攻击速度增加120%，同时击晕目标1.5秒。弱控技能，可定身可眩晕，是蜀山的核心技能",
                # 技能类型 (控制技能)
                "type": SkillType.CONTROL,
                # 冷却时间 (毫秒)   0秒冷却
                "cd": 0,
                # 消耗魔法值
                "mp": 0,
                # 技能效果
                "effect": [],
                # 技能范围
                "range": 1,  
                # 怒气
                "rage": 60,
                # 释放次数
                "release_count": 1,
                # 持续时间 （秒）
                "duration": 50000,  # 50秒转换为毫秒
                # 技能优先级 (1:核心技能 ， 2:主要技能 ， 3:次要技能 ， 4:辅助技能 ， 5:强控技能)
                "priority": 3,
                # 是否蓄力
                "is_charge": False, 
                # 技能连招 
                "combo": [],
                # 技能冲突
                "conflict": [],
                # 技能图片
                "image": "SHUSHAN_SKILL_1_2.png", 
            },
            # 剑飞惊鸿
            SkillDict.SHUSHAN_SKILL_CONTROL_1_4: {
                "name": SkillDict.SHUSHAN_SKILL_CONTROL_1_4,
                # 技能描述
                "description": "令范围内6个敌人眩晕2秒",
                # 技能类型 (控制技能)
                "type": SkillType.CONTROL,
                # 冷却时间 (毫秒)   45秒冷却
                "cd": 45000,
                # 消耗魔法值
                "mp": 85,
                # 技能效果
                "effect": [],
                # 技能范围
                "range": 1,  
                # 怒气
                "rage": 0,
                # 释放次数
                "release_count": 1,
                # 持续时间 （秒）
                "duration": 1000,  # 1秒转换为毫秒
                # 技能优先级 
                "priority": 3,
                # 是否蓄力
                "is_charge": False, 
                # 技能图片
                "image": "SHUSHAN_SKILL_CONTROL_1_4.png", 
            },
            # """增益技能"""
            # 雪花六出
            SkillDict.SHUSHAN_SKILL_BUFF_1: {
                "name": SkillDict.SHUSHAN_SKILL_BUFF_1,
                "description": "剑法，瞬发，让自身30分钟内，每次普通攻击，会额外对自身周围7*7范围内，最多5个目标造成10%的普通伤害。",
                # 技能类型 (辅助技能)
                "type": SkillType.BUFF,
                # 冷却时间 (毫秒)   0秒冷却
                "cd": 1800000,
                # 消耗魔法值
                "mp": 104,
                # 技能效果
                "effect": [],
                # 技能范围
                "range": 7,
                # 怒气
                "rage": 0,
                # 释放次数
                "release_count": 1,
                # 持续时间
                "duration": 1800000,  # 30分钟转换为毫秒
                # 技能优先级
                "priority": 3,
                # 是否蓄力
                "is_charge": False,
                # 技能连招 
                "combo": [SkillDict.SHUSHAN_SKILL_BUFF_2],
                # 技能冲突
                "conflict": [],
                # 技能图片
                "image": "SHUSHAN_SKILL_BUFF_1.png", 
            },
            # 叠心三击
            SkillDict.SHUSHAN_SKILL_BUFF_2: {
                "name": SkillDict.SHUSHAN_SKILL_BUFF_2,
                "description": "剑法，瞬发，让自身30分钟内,每次成功的普通攻击有23%概率打出额外的2次攻击，每次攻击造成23%的普通伤害。  ",
                # 技能类型 (增益技能)
                "type": SkillType.BUFF,
                # 冷却时间 (毫秒)   0秒冷却
                "cd": 1800000,
                # 消耗魔法值
                "mp": 104,
                # 技能效果
                "effect": [],
                # 技能范围
                "range": 7,
                # 怒气
                "rage": 0,
                # 释放次数
                "release_count": 1,
                # 持续时间
                "duration": 1800000,  # 30秒转换为毫秒
                # 技能优先级
                "priority": 3,
                # 是否蓄力
                "is_charge": False,
                # 技能连招 
                "combo": [SkillDict.SHUSHAN_SKILL_BUFF_3],
                # 技能冲突
                "conflict": [],
                # 技能图片
                "image": "SHUSHAN_SKILL_BUFF_2.png", 
            },

            # """爆发技能"""
            # 运转七星
            SkillDict.SHUSHAN_SKILL_BLAST_1: {
                "name": SkillDict.SHUSHAN_SKILL_BLAST_1,
                "description": "15秒内提升50%的闪避率和技能闪避率",
                # 技能类型 (爆发技能)
                "type": SkillType.BLAST,
                # 冷却时间 (毫秒)   2分钟冷却
                "cd": 120000,
                # 消耗魔法值
                "mp": 104,
                # 技能效果
                "effect": [],
                # 技能范围
                "range": 7,
                # 怒气
                "rage": 0,
                # 释放次数
                "release_count": 1,
                # 持续时间 （秒）
                "duration": 15000,  # 15秒转换为毫秒
                # 技能优先级
                "priority": 3,
                # 是否蓄力
                "is_charge": False,
                # 技能连招 
                "combo": [],
                # 技能冲突
                "conflict": [],
                # 技能图片
                "image": False, 
            },

            # 八步赶蝉
            SkillDict.SHUSHAN_SKILL_BLAST_2: {
                "name": SkillDict.SHUSHAN_SKILL_BLAST_2,
                "description": "15秒内提升50%的攻击速度",
                # 技能类型 (爆发技能)
                "type": SkillType.BLAST,
                # 冷却时间 (毫秒)   60秒冷却
                "cd": 60000,
                # 消耗魔法值
                "mp": 104,
                # 技能效果
                "effect": [],
                # 技能范围
                "range": 7,
                # 怒气
                "rage": 0,
                # 释放次数
                "release_count": 1,
                # 持续时间
                "duration": 15000,  # 15秒转换为毫秒
                # 技能优先级
                "priority": 3,
                # 是否蓄力
                "is_charge": False,
                # 技能连招 
                "combo": [],
                # 技能冲突
                "conflict": [],
                # 技能图片
                "image": False, 
            },

            # """增益类技能"""
            # 剑灵-回天
            SkillDict.SHUSHAN_SKILL_BUFF_3: {
                "name": SkillDict.SHUSHAN_SKILL_BUFF_3,
                "description": "回天剑灵附体，使范围内的队伍成员每5秒恢复2%的生命值上线额外加240点生命值,同一时刻只能开启一种剑灵附体效果",
                # 技能类型 (增益技能)
                "type": SkillType.AID,
                # 冷却时间 (毫秒)   15秒冷却
                "cd": 15000,
                # 消耗魔法值
                "mp": 135,
                # 技能效果
                "effect": [],
                # 技能范围
                "range": 7,
                # 怒气
                "rage": 0,
                # 释放次数
                "release_count": 1,
                "duration": 30000,  # 30秒转换为毫秒
                # 效果冲突
                "conflict": [SkillDict.SHUSHAN_SKILL_BUFF_4, SkillDict.SHUSHAN_SKILL_BUFF_5],
                # 技能优先级
                "priority": 3,
                # 是否蓄力
                "is_charge": False,
                # 技能连招 
                "combo": [],
                # 技能冲突
                "conflict": [],
                # 技能图片
                "image": "SHUSHAN_SKILL_BUFF_3.png", 
            },
            # 剑灵-同归
            SkillDict.SHUSHAN_SKILL_BUFF_4: {
                "name": SkillDict.SHUSHAN_SKILL_BUFF_4,
                "description": "同归剑灵附体，使范围内的队伍成员能够将6%的伤害反弹给攻击者，同一时刻只能开启一种剑灵附体效果",
                "type": SkillType.AID,
                # 冷却时间 (毫秒)   15秒冷却
                "cd": 15000,
                # 消耗魔法值
                "mp": 135,
                # 技能效果
                "effect": [],
                # 技能范围
                "range": 7,
                # 怒气
                "rage": 0,
                # 释放次数
                "release_count": 1,
                "duration": 30000,  # 30秒转换为毫秒
                # 效果冲突
                "conflict": [SkillDict.SHUSHAN_SKILL_BUFF_3, SkillDict.SHUSHAN_SKILL_BUFF_5],
                # 技能优先级
                "priority": 10,
                # 是否蓄力
                "is_charge": False,
                # 技能连招 
                "combo": [],
                # 技能冲突
                "conflict": [],
                # 技能图片
                "image": "SHUSHAN_SKILL_BUFF_4.png", 
                },
            # 剑灵-追电
            SkillDict.SHUSHAN_SKILL_BUFF_5: {
                "name": SkillDict.SHUSHAN_SKILL_BUFF_5,
                "description": "追电剑灵附体，使范围内的队伍成员果攻击速度提高12%，同一时刻只能开启一种剑灵附体效果",
                "type": SkillType.AID,
                # 冷却时间 (毫秒)   15秒冷却
                "cd": 15000,
                # 消耗魔法值
                "mp": 135,
                # 技能效果
                "effect": [],
                # 技能范围
                "range": 7,
                # 怒气
                "rage": 0,
                # 释放次数
                "release_count": 1,
                "duration": 30000,  # 30秒转换为毫秒
                # 效果冲突
                "conflict": [SkillDict.SHUSHAN_SKILL_BUFF_3, SkillDict.SHUSHAN_SKILL_BUFF_4],
                # 技能优先级
                "priority": 10,
                # 是否蓄力
                "is_charge": False,
                # 技能连招 
                "combo": [],
                # 技能冲突
                "conflict": [],
                # 技能图片
                "image": "SHUSHAN_SKILL_BUFF_5.png", 
            },

            # """御剑类技能"""
            # 御剑术-剑雨
            SkillDict.SHUSHAN_SKILL_SWORD_BUFF_1: {
                "name": SkillDict.SHUSHAN_SKILL_SWORD_BUFF_1,
                # 技能描述
                "description": "召唤剑雨，持续30秒，每3秒对范围内的敌人造成伤害。",
                # 技能类型 (御剑技能)
                "type": SkillType.AID,
                # 冷却时间 (毫秒)  30秒冷却         
                "cd": 30000,
                # 消耗魔法值
                "mp": 115,
                # 技能效果
                "effect": [],
                # 技能范围
                "range": 11*11, 
                # 怒气
                "rage": 0,
                # 释放次数
                "release_count": 1,
                # 技能冲突
                "conflict": [SkillDict.SHUSHAN_SKILL_SWORD_BUFF_2 ,SkillDict.SHUSHAN_SKILL_SWORD_BUFF_3],
                # 持续时间
                "duration": 30000,  # 30秒转换为毫秒
                # 技能优先级
                "priority": 3,
                # 是否蓄力
                "is_charge": False,
                # 技能连招 
                "combo": [],
                # 技能冲突
                "conflict": [],
                # 技能图片
                "image": "SHUSHAN_SKILL_SWORD_BUFF_1.png", 
            },
            # 御剑术-裂地
            SkillDict.SHUSHAN_SKILL_SWORD_BUFF_2: {
                "name": SkillDict.SHUSHAN_SKILL_SWORD_BUFF_2,
                # 技能描述
                "description": "召唤裂地，持续30秒，每5秒对范围内的敌人造成伤害，并使敌人移动速度下降。",
                # 技能类型 (御剑技能)
                "type": SkillType.AID,
                # 冷却时间 (毫秒)  30秒冷却         
                "cd": 30000,
                # 消耗魔法值
                "mp": 115,
                # 技能效果
                "effect": [],
                # 技能范围
                "range": 11*11, 
                # 怒气
                "rage": 0,
                # 释放次数
                "release_count": 1,
                # 持续时间
                "duration": 30000,  # 30秒转换为毫秒
                # 技能优先级
                "priority": 6,
                # 是否蓄力
                "is_charge": False,
                # 技能连招 
                "combo": [],
                # 技能冲突
                "conflict": [SkillDict.SHUSHAN_SKILL_SWORD_BUFF_1,SkillDict.SHUSHAN_SKILL_SWORD_BUFF_3],
                # 技能图片
                "image": "SHUSHAN_SKILL_SWORD_BUFF_2.png", 
            },
            # 御剑术-御剑
            SkillDict.SHUSHAN_SKILL_SWORD_BUFF_3: {
                "name": SkillDict.SHUSHAN_SKILL_SWORD_BUFF_3,
                "description": "御剑术，瞬发，召唤御剑，持续30秒，每5秒对范围内的敌人造成伤害，并使敌人移动速度下降。",
                # 技能类型 (御剑技能)
                "type": SkillType.AID,
                # 冷却时间 (毫秒)   15秒冷却
                "cd": 15000,
                # 消耗魔法值
                "mp": 135,
                # 技能效果
                "effect": [],
                # 技能范围
                "range": 7,
                # 怒气
                "rage": 0,
                # 释放次数
                "release_count": 1,
                # 持续时间  30秒
                "duration": 30000,  # 30秒转换为毫秒
                # 效果冲突
                "conflict": [SkillDict.SHUSHAN_SKILL_BUFF_3, SkillDict.SHUSHAN_SKILL_BUFF_5],
                # 技能优先级
                "priority": 10,
                # 是否蓄力
                "is_charge": False,
                # 技能连招 
                "combo": [],
                # 技能冲突
                "conflict": [],
                # 技能图片
                "image": "SHUSHAN_SKILL_SWORD_BUFF_3.png", 
            }
        }

class ShushanSkillList:
    def __init__(self):
        pass
    
    # 获取技能列表
    def get_skill_list(self):
        pass